using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("SpellUtils")]
	public class SpellUtils : MonoClass
	{
		public SpellUtils(IntPtr address, string className)
			: base(address, className)
		{
		}

		public SpellUtils(IntPtr address)
			: this(address, "SpellUtils")
		{
		}

		public static SpellClassTag ConvertClassTagToSpellEnum(TAG_CLASS classTag)
		{
			return MonoClass.smethod_14<SpellClassTag>(TritonHs.MainAssemblyPath, "", "SpellUtils", "ConvertClassTagToSpellEnum", new object[1] { classTag });
		}

		public static Player.Side ConvertSpellSideToPlayerSide(Spell spell, SpellPlayerSide spellSide)
		{
			return MonoClass.smethod_14<Player.Side>(TritonHs.MainAssemblyPath, "", "SpellUtils", "ConvertSpellSideToPlayerSide", new object[2] { spell, spellSide });
		}

		public static List<Zone> FindZonesFromTag(SpellZoneTag zoneTag)
		{
			return MonoClass.smethod_16<Class271<Zone>>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindZonesFromTag", new Class276.Enum20[1] { Class276.Enum20.ValueType }, new object[1] { zoneTag })?.method_25();
		}

		public static List<Zone> FindZonesFromTag(Spell spell, SpellZoneTag zoneTag, SpellPlayerSide spellSide)
		{
			return MonoClass.smethod_16<Class271<Zone>>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindZonesFromTag", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.ValueType,
				Class276.Enum20.ValueType
			}, new object[3] { spell, zoneTag, spellSide })?.method_25();
		}

		public static Transform GetLocationTransform(Spell spell)
		{
			return MonoClass.smethod_15<Transform>(TritonHs.MainAssemblyPath, "", "SpellUtils", "GetLocationTransform", new object[1] { spell });
		}

		public static GameObject GetLocationObject(Spell spell)
		{
			return MonoClass.smethod_15<GameObject>(TritonHs.MainAssemblyPath, "", "SpellUtils", "GetLocationObject", new object[1] { spell });
		}

		public static GameObject GetSpellLocationObject(Spell spell, SpellLocation location, string overrideTransformName)
		{
			return MonoClass.smethod_15<GameObject>(TritonHs.MainAssemblyPath, "", "SpellUtils", "GetSpellLocationObject", new object[3] { spell, location, overrideTransformName });
		}

		public static bool SetPositionFromLocation(Spell spell)
		{
			return MonoClass.smethod_11<bool>(TritonHs.MainAssemblyPath, "", "SpellUtils", "SetPositionFromLocation", new Class276.Enum20[1] { Class276.Enum20.Class }, new object[1] { spell });
		}

		public static bool SetPositionFromLocation(Spell spell, bool setParent)
		{
			return MonoClass.smethod_11<bool>(TritonHs.MainAssemblyPath, "", "SpellUtils", "SetPositionFromLocation", new Class276.Enum20[2]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Boolean
			}, new object[2] { spell, setParent });
		}

		public static bool SetOrientationFromFacing(Spell spell)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "SpellUtils", "SetOrientationFromFacing", new object[1] { spell });
		}

		public static Player FindFriendlyPlayer(Spell spell)
		{
			return MonoClass.smethod_15<Player>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindFriendlyPlayer", new object[1] { spell });
		}

		public static Player FindOpponentPlayer(Spell spell)
		{
			return MonoClass.smethod_15<Player>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindOpponentPlayer", new object[1] { spell });
		}

		public static ZonePlay FindFriendlyPlayZone(Spell spell)
		{
			return MonoClass.smethod_15<ZonePlay>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindFriendlyPlayZone", new object[1] { spell });
		}

		public static ZonePlay FindOpponentPlayZone(Spell spell)
		{
			return MonoClass.smethod_15<ZonePlay>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindOpponentPlayZone", new object[1] { spell });
		}

		public static Card FindOpponentHeroCard(Spell spell)
		{
			return MonoClass.smethod_15<Card>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindOpponentHeroCard", new object[1] { spell });
		}

		public static Zone FindTargetZone(Spell spell)
		{
			return MonoClass.smethod_15<Zone>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindTargetZone", new object[1] { spell });
		}

		public static Actor GetParentActor(Spell spell)
		{
			return MonoClass.smethod_15<Actor>(TritonHs.MainAssemblyPath, "", "SpellUtils", "GetParentActor", new object[1] { spell });
		}

		public static GameObject GetParentRootObject(Spell spell)
		{
			return MonoClass.smethod_15<GameObject>(TritonHs.MainAssemblyPath, "", "SpellUtils", "GetParentRootObject", new object[1] { spell });
		}

		public static MeshRenderer GetParentRootObjectMesh(Spell spell)
		{
			return MonoClass.smethod_15<MeshRenderer>(TritonHs.MainAssemblyPath, "", "SpellUtils", "GetParentRootObjectMesh", new object[1] { spell });
		}

		public static bool IsNonMetaTaskListInMetaBlock(PowerTaskList taskList)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "SpellUtils", "IsNonMetaTaskListInMetaBlock", new object[1] { taskList });
		}

		public static bool CanAddPowerTargets(PowerTaskList taskList)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "SpellUtils", "CanAddPowerTargets", new object[1] { taskList });
		}

		public static void SetCustomSpellParent(Spell spell, Component c)
		{
			MonoClass.smethod_18(TritonHs.MainAssemblyPath, "", "SpellUtils", "SetCustomSpellParent", spell, c);
		}

		public static Spell LoadAndSetupSpell(string spellPath, Component owner)
		{
			return MonoClass.smethod_15<Spell>(TritonHs.MainAssemblyPath, "", "SpellUtils", "LoadAndSetupSpell", new object[2] { spellPath, owner });
		}

		public static void SetupSpell(Spell spell, Component c)
		{
			MonoClass.smethod_18(TritonHs.MainAssemblyPath, "", "SpellUtils", "SetupSpell", spell, c);
		}

		public static void SetupSoundSpell(CardSoundSpell spell, Component c)
		{
			MonoClass.smethod_18(TritonHs.MainAssemblyPath, "", "SpellUtils", "SetupSoundSpell", spell, c);
		}

		public static bool ActivateBirthIfNecessary(Spell spell)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "SpellUtils", "ActivateBirthIfNecessary", new object[1] { spell });
		}

		public static bool ActivateDeathIfNecessary(Spell spell)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "SpellUtils", "ActivateDeathIfNecessary", new object[1] { spell });
		}

		public static bool ActivateCancelIfNecessary(Spell spell)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "SpellUtils", "ActivateCancelIfNecessary", new object[1] { spell });
		}

		public static void PurgeSpell(Spell spell)
		{
			MonoClass.smethod_18(TritonHs.MainAssemblyPath, "", "SpellUtils", "PurgeSpell", spell);
		}

		public static GameObject FindSourceAutoObjectForSpell(Spell spell)
		{
			return MonoClass.smethod_15<GameObject>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindSourceAutoObjectForSpell", new object[1] { spell });
		}

		public static GameObject FindTargetAutoObjectForSpell(Spell spell)
		{
			return MonoClass.smethod_15<GameObject>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindTargetAutoObjectForSpell", new object[1] { spell });
		}

		public static GameObject FindAutoObjectForSpell(Entity entity, Card card, TAG_CARDTYPE cardType)
		{
			return MonoClass.smethod_15<GameObject>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindAutoObjectForSpell", new object[3] { entity, card, cardType });
		}

		public static Card FindBestTargetCard(Spell spell)
		{
			return MonoClass.smethod_15<Card>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindBestTargetCard", new object[1] { spell });
		}

		public static Card FindHeroCard(Card card)
		{
			return MonoClass.smethod_15<Card>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindHeroCard", new object[1] { card });
		}

		public static Card FindHeroPowerCard(Card card)
		{
			return MonoClass.smethod_15<Card>(TritonHs.MainAssemblyPath, "", "SpellUtils", "FindHeroPowerCard", new object[1] { card });
		}

		public static void FaceSameAs(GameObject source, GameObject target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceSameAs", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceSameAs(GameObject source, Component target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceSameAs", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceSameAs(Component source, GameObject target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceSameAs", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceSameAs(Component source, Component target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceSameAs", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceSameAs(Transform source, Transform target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceSameAs", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceOppositeOf(GameObject source, GameObject target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceOppositeOf", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceOppositeOf(GameObject source, Component target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceOppositeOf", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceOppositeOf(Component source, GameObject target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceOppositeOf", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceOppositeOf(Component source, Component target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceOppositeOf", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceOppositeOf(Transform source, Transform target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceOppositeOf", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceTowards(GameObject source, GameObject target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceTowards", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceTowards(GameObject source, Component target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceTowards", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceTowards(Component source, GameObject target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceTowards", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceTowards(Component source, Component target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceTowards", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void FaceTowards(Transform source, Transform target, SpellFacingOptions options)
		{
			MonoClass.smethod_19(TritonHs.MainAssemblyPath, "", "SpellUtils", "FaceTowards", new Class276.Enum20[3]
			{
				Class276.Enum20.Class,
				Class276.Enum20.Class,
				Class276.Enum20.Class
			}, source, target, options);
		}

		public static void SetOrientation(Transform source, Vector3 sourcePosition, Vector3 targetPosition, SpellFacingOptions options)
		{
			MonoClass.smethod_18(TritonHs.MainAssemblyPath, "", "SpellUtils", "SetOrientation", source, sourcePosition, targetPosition, options);
		}
	}
}
